import axios from "axios";
import {message} from "antd";
import Nprogress from 'nprogress'
import {getToken} from "@/util/token.js";

const config = {
    baseURL: "/api",
    timeout: 10000
}

const service = axios.create(config)

/**
 * @description 请求拦截器
 * 客户端发送请求 -> [请求拦截器] -> 服务器
 * token校验(JWT) : 接受服务器返回的token,存储到redux/本地储存当中
 */

service.interceptors.request.use(config => {
    Nprogress.start();
    const token = getToken();
    console.log("config", config);
    if (token) {
        config.headers.token = token.token;
        config.headers.username = token.username;
    }
    return config;
})

/**
 * @description 响应拦截器
 *  服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息
 */
service.interceptors.response.use(res => {
    const {data} = res;
    if (data.code === 200 || data.code === 20000) {
        Nprogress.done();
        return data
    }
    // `token` 过期或者账号已在别处登录
    message.error(data.msg);
    Nprogress.done();
    return Promise.reject(data);
})

export default service;